Clojure, একটি লিস্প-ভিত্তিক ভাষা হিসেবে, এক্সপ্রেশন-ভিত্তিক প্রোগ্রামিংয়ের উপর ভিত্তি করে তৈরি হয়েছে। এর প্রতিটি স্টেটমেন্ট বা এক্সপ্রেশন একটি নির্দিষ্ট আউটপুট প্রদান করে। Clojure এর কোড ব্র্যাকেটের মধ্যে লেখা হয়, যা কোডকে পড়তে এবং ব্যাখ্যা করতে সহজ করে তোলে। Clojure এর মৌলিক সিনট্যাক্স বোঝার জন্য নিচের বিষয়গুলো গুরুত্বপূর্ণ।
Clojure এর প্রতিটি কোড স্টেটমেন্টকে S-Expression আকারে লেখা হয়। এর প্রতিটি এক্সপ্রেশন ()
প্যারেনথেসিসের মধ্যে থাকে এবং প্রথম অংশটি ফাংশন বা অপারেটরকে নির্দেশ করে। উদাহরণস্বরূপ:
(+ 1 2 3) ; আউটপুট: 6
এখানে +
অপারেটর এবং 1 2 3
অপারেটরের আর্গুমেন্ট হিসেবে ব্যবহার করা হয়েছে।
Clojure-এ ভেরিয়েবল ডিফাইন করতে def
কীওয়ার্ড ব্যবহার করা হয়। Clojure-এ ডিফাইন করা ভেরিয়েবলগুলো ইমিউটেবল, অর্থাৎ একবার সেট করা হলে তা পরিবর্তন করা যায় না।
(def x 10)
(def y 20)
(+ x y) ; আউটপুট: 30
এখানে x
এবং y
নামক দুটি ভেরিয়েবল ডিফাইন করা হয়েছে এবং তাদের যোগফল হিসেবে 30
পাওয়া যাচ্ছে।
Clojure-এ ফাংশন ডিফাইন করতে defn
কীওয়ার্ড ব্যবহার করা হয়। defn
দিয়ে ফাংশনের নাম এবং প্যারামিটার নির্ধারণ করা যায়।
(defn যোগফল [a b]
(+ a b))
(যোগফল ৫ ১৫) ; আউটপুট: 20
এখানে যোগফল
নামক একটি ফাংশন তৈরি করা হয়েছে যা দুইটি সংখ্যা যোগ করে।
Clojure-এ কন্ডিশনাল লজিকের জন্য if
এবং cond
ব্যবহার করা হয়। if
একটি এক্সপ্রেশনকে চেক করে এবং কন্ডিশন সত্য হলে প্রথম অংশটি এবং মিথ্যা হলে দ্বিতীয় অংশটি রিটার্ন করে।
(defn check-positive [x]
(if (> x 0)
"Positive"
"Non-positive"))
(check-positive 10) ; আউটপুট: "Positive"
(check-positive -5) ; আউটপুট: "Non-positive"
এখানে check-positive
নামক একটি ফাংশন তৈরি করা হয়েছে, যা সংখ্যা পজিটিভ কিনা তা চেক করে।
Clojure-এ কয়েকটি মৌলিক ডেটা স্ট্রাকচার রয়েছে, যেমন:
[]
ব্যবহার করা হয়।()
এর মধ্যে থাকে।{}
ব্যবহার করা হয়।#
চিহ্ন ব্যবহার করা হয়।(def my-vector [1 2 3])
(def my-list '(1 2 3))
(def my-map {:name "Alice" :age 30})
(def my-set #{1 2 3})
Clojure-এ পুনরাবৃত্তির জন্য loop
এবং recur
ব্যবহৃত হয়। এটি সাধারণত লুপিং এবং পুনরাবৃত্তি করার জন্য উপযোগী।
(defn sum-numbers [n]
(loop [i 1 sum 0]
(if (> i n)
sum
(recur (inc i) (+ sum i)))))
(sum-numbers 5) ; আউটপুট: 15
এখানে sum-numbers
ফাংশনটি ১ থেকে n
পর্যন্ত সংখ্যার যোগফল বের করে।
Clojure-এ ল্যাম্বডা এক্সপ্রেশন বা অজানা ফাংশন তৈরির জন্য fn
ব্যবহার করা হয়।
((fn [x] (* x x)) 5) ; আউটপুট: 25
এখানে অস্থায়ীভাবে একটি অজানা ফাংশন তৈরি করা হয়েছে, যা সংখ্যার বর্গফল প্রদান করে।
Clojure-এ ফাংশনাল প্রোগ্রামিং ধারণা হিসেবে map
, filter
, এবং reduce
ফাংশন ব্যবহার করা হয়।
(map inc [1 2 3]) ; আউটপুট: (2 3 4)
(filter odd? [1 2 3 4]) ; আউটপুট: (1 3)
(reduce + [1 2 3 4]) ; আউটপুট: 10
এগুলো তালিকা বা ভেক্টরের উপাদানগুলোর উপর বিভিন্ন ধরনের অপারেশন সম্পাদন করে।
Clojure এর মৌলিক সিনট্যাক্সে S-Expressions, ইমিউটেবল ভেরিয়েবল, ফাংশন ডিফাইনেশন, কন্ডিশনাল স্টেটমেন্ট, ডেটা স্ট্রাকচার, লুপ এবং পুনরাবৃত্তি, ল্যাম্বডা এক্সপ্রেশন, এবং ম্যাপ, ফিল্টার, রিডিউস ফাংশন অন্তর্ভুক্ত রয়েছে। Clojure এর সিনট্যাক্স তার সরলতা এবং সংক্ষিপ্ততার জন্য খুবই কার্যকর এবং প্রোগ্রামারদের একটি ফাংশনাল প্রোগ্রামিং পরিবেশ প্রদান করে।
common.read_more